package main

import (
	"fmt"
	"log"
	"net/rpc"
	"studyGolangDemo01/rpc/server/server_func"
)

func main() {

	// 通过 rpc.Dial 函数建立 TCP 链接，注意的是这里的 IP、端口要和RPC 服务提供的一致；
	// client, err := rpc.Dial("tcp", "localhost:8088")   // tcp调用方式
	client, err := rpc.DialHTTP("tcp", "localhost:8088") // http调用方式

	if err != nil {
		log.Fatal("dialing")
	}
	// 准备远程方法需要的参数，此处为示例中的 args 和 reply；
	args := server_func.Args{A: 1, B: 2}
	var reply int
	// 通过 Call 方法调用远程的 RPC 服务；
	// Call 方法有 3 个参数，它们的作用：
	// 		1、调用的远程方法的名字，此处为 MathService.Add，点前面的部分是注册的服务的名称，点后面的部分是该服务的方法；
	// 		2、客户端为了调用远程方法提供的参数，示例中是 args；
	// 		3、为了接收远程方法返回的结果，必须是一个指针，此处为 示例中的 &replay 。
	err = client.Call("MathService.Add", args, &reply)
	if err != nil {
		log.Fatal("MathService.Add error", err)
	}
	fmt.Printf("MathService.Add: %d+%d=%d", args.A, args.B, reply)

}
